Terway Edge网络插件是基于Terway和自研Flannel Route模式在ACK Edge集群提供的Underlay容器网络插件,容器网络插件需要在创建集群时进行安装,并且集群创建之后不支持更改。本文介绍如何配置Terway Edge网络插件。
在创建集群时安装Terway网络插件
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击创建集群。
单击ACK Edge 集群页签,为Terway网络插件配置集群网络的关键参数。
配置项
说明
专有网络
集群使用的VPC。
网络插件
选择Terway Edge。
交换机
集群中节点所使用的虚拟交换机网段。建议选择来自3个及以上不同可用区的交换机,以达到更高集群可用性等级。
Pod 交换机
云端Pod所使用的虚拟交换机网段,可以与节点虚拟交换机网段重合。
Service CIDR
Service所使用的网段,不能与节点及Pod的网段重合。
Pod网络CIDR
边缘侧可供分配的容器网络IP段,请参见Kubernetes集群网络规划。
节点 Pod 数量
边缘节点上最大可支持创建的Pod数量。
专线模式下的网络基础设施管理
如果您希望将IDC以专线的方式接入到ACK Edge集群中,在本地IDC和阿里云专有网络VPC之间构建安全、稳定、高速的私网通信,以阿里云高速通道为例,您需要进行以下网络配置:
以下图为例,本地IDC主机网段为172.16.0.0/16,云端VPC网段为192.168.0.0/16,边缘Pod网络CIDR为10.0.0.0/8,由边缘/本地IDC访问中心云的路由称为上行路由、由中心云访问本地IDC/边缘设备被称之为下行路由。
分别在本地IDC内交换机、网关设备、边界路由器以及专线网关或云企业网配置访问阿里云VPC(192.168.0.0/16)的上行路由,上行请求可以到达位于VPC的ACK Edge管控面、ECS等产品。
对应也需配置下行路由,确保云端ACK Edge管控面、ECS、容器访问IDC主机网段(172.16.0.0/16)和容器网段(10.0.0.0/8)的请求能够到达本地IDC。
专线配置需要根据具体场景进行自定义,详细描述及配置方式请参见高速通道。
云端使用Terway组件
Terway Edge网络插件在云端节点池与ACK集群Pro版的Terway组件的工作模式一致,使用方法请参见Terway网络插件。
目前ACK Edge集群的Terway仅支持共享ENI模式、暂不支持DataPath、NetworkPolicy、Trunk ENI等能力。
ENS网络中使用Terway组件
Terway Edge网络插件在ENS节点中基于ENS弹性网卡提供容器网络通信。详细信息,请参见在ENS网络中使用Terway。
边缘使用Flannel组件
Terway Edge网络插件在边缘侧采用Flannel网络插件自研的Route模式。节点接入之后,ACK Edge集群控制面会自动为节点分配一个Pod CIDR网段,这个节点上的Pod IP地址会从这个网段中分配,并且在宿主机路由表中配置好容器路由。
使用BGP宣告容器路由
当两台节点上的容器进行跨节点通信时,容器网络数据包需要通过主机的网络栈进行转发。
当两台主机位于同一个局域网中,可以通过节点主机路由(Flannel会配置主机路由)找到目的主机地址,进行容器网络数据包的传输。
当两台主机位于不同的局域网中,容器网络数据包就会通过主机转发到外部的网络设备上,但由于网络设备缺乏容器网段的路由配置,因此无法完成容器网络数据包的传输。
Flannel宣告容器网段路由
为了将容器路由配置到外部的网络设备上,Flannel的Route模式会启动一个BGP服务,与外部网络设备构建BGP会话,动态将本局域网内的容器网络宣告给网络设备。
配置BGP宣告容器路由
外部网络设备(三层交换机)需支持BGP协议,并可进行配置操作。
BGPPeer是一个新的CRD(Custom Resource Definition)用于配置BGP邻居。
步骤一:配置集群内BGP客户端
请将以下内容复制到bgppeer.yaml文件中,并根据您的需求进行自定义配置。
apiVersion: network.openyurt.io/v1alpha1 kind: BGPPeer metadata: name: peer spec: localSpeakers: - node-1 - node-2 localAsNumber: 65010 peerIP: 172.16.0.1 peerAsNumber: 65001 nodeSelector: alibabacloud.com/nodepool-id=npxxx # 可选项 authPassword: secretKeyRef: name: bgp-secret key: password --- #可选项 apiVersion: v1 kind: Secret metadata: name: bgp-secret namespace: kube-system type: Opaque data: password: bXlTZWNyZXRWYWx1ZQ== # base64编码的值。
参数说明:
参数
是否必填
说明
metadata.name
是
BGPPeer的名称。
spec.localSpeakers
是
集群内的BGP客户端节点。会全量宣告本局域网的所有节点容器网段,建议选择2个及以上节点。
spec.localAsNumber
是
本BGPPeer的ASN,也是BGP客户端所在的自治系统的编号。ASN在BGP协议中的自治系统唯一标识符,一般一个局域网是一个自治系统,私有ASN的范围为(64512,65535)。
spec.peerIP
是
局域网网关/三层交换机设备地址,用于和集群内BGP客户端节点之间构建BGP会话。
spec.peerAsNumber
是
局域网网关/三层交换机设备的ASN。
spec.gateway
否
自定义指定跨自治域容器通信的网关地址,默认为该局域网的网关/交换机地址。
spec.nodeSelector
是
节点选择器。用于选择属于本BGPPeer自治系统的节点。建议用节点池label选择一个节点池的所有节点,如果所有边缘节点都位于一个局域网,即一个自治系统,可以配置为
all()
。spec.authPassword
否
建立BGP会话的密码。首先创建一个K8s资源Secret,要求必须在kube-system命名空间中,将这个Secret的Key记录到本字段中,需要标注Secret的Name,以及密码的Key。
执行以下命令,创建BGPPeer。
kubectl apply -f bgppeer.yaml
执行以下命令,查看BGPPeer应用状态。
kubectl get bgppeer peer
预期输出:
NAME LOCALSPEAKERS LOCALASNUMBER PEERIP PEERASNUMBER AGE peer ["node-1","node-2"] 65010 172.16.0.1 65001 10m
步骤二:配置外部网络设备启动BGP服务
建议您在集群中选择至少三个节点作为BGP对端,保证在组件升级过程中保持BGP会话,避免因容器路由老化导致容器网络不通。
Terway Edge默认开启BGP GracefulRestart,默认时间为600秒,请您合理配置交换机的BGP GracefulRestart。
根据您网络设备的型号以及BGP服务的配置方式启动BGP服务。
在网络设备上,将步骤1中选择的BGP节点配置为BGP邻居,并且确保可以成功构建BGP会话。
将BGP获取的容器路由添加到网络设备的路由表中。